package com.yueshang.neuron.common.util;

import java.util.ArrayList;
import java.util.List;

public class InfiniteLevelTreeUtil {

    // 入口方法
    public static List<Node> getInfiniteLevelTree(List<Node> nodeList) {
        List<Node> list = new ArrayList<>();
        // 遍历节点列表
        int i=0;
        for (Node node : nodeList) {
            if (node.getPid().equals("0")) {
                // parentID为-1（根节点）作为入口

                String key="0-"+i;
                node.setKey(key);
                node.setChildren(getChildrenNode(node.getValue(), nodeList,key ));
                list.add(node);
                i++;
            }
        }
        // 排序
        list.sort(new NodeOrderComparator());
        return list;
    }

    // 获取子节点的递归方法
    public static List<Node> getChildrenNode(String id, List<Node> nodeList,String key) {
        List<Node> lists = new ArrayList<>();
        int i=0;
        for (Node node : nodeList) {
            if (node.getPid().equals(id)) {
                // 递归获取子节点
                String newKey=key+"-"+i;
                node.setKey(newKey);
                node.setChildren(getChildrenNode(node.getValue(), nodeList,newKey));
                lists.add(node);
                i++;
            }
        }
        // 排序
        lists.sort(new NodeOrderComparator());
        return lists;
    }


}
